package com.jvyou.app.common.enums;

import lombok.Getter;

@Getter
public enum HttpCodeEnum {
    // 成功
    SUCCESS(200, "操作成功", ErrorShowType.NOTIFICATION),
    SYSTEM_ERROR(500, "系统出错,请联系管理员反馈问题", ErrorShowType.NOTIFICATION),
    DATA_SERVER_CONNECT_ERROR(501, "数据服务器连接异常，请联系管理员启动服务器", ErrorShowType.NOTIFICATION),
    UNKNOWN_ERROR(4000, "未知错误，请联系管理员反馈问题", ErrorShowType.NOTIFICATION),
    CLIENT_ERROR(4000, "客户端异常", ErrorShowType.NOTIFICATION),
    ARGUMENT_VALID_ERROR(4000, "参数校验异常", ErrorShowType.NOTIFICATION),
    BAD_REQUEST(4000, "请求参数有误", ErrorShowType.NOTIFICATION),
    // 权限认证 4xx
    REQUIRE_TOKEN(401, "尚未登录，请登录后操作", ErrorShowType.NOTIFICATION),
    NO_OPERATOR_AUTH(403, "无操作权限", ErrorShowType.NOTIFICATION),
    LOGIN_OUT_TIME(401, "登录超时", ErrorShowType.NOTIFICATION),
    USER_NOT_EXIST(411, "用户不存在", ErrorShowType.NOTIFICATION),
    PASSWORD_NOT_RIGHT(412, "密码错误", ErrorShowType.NOTIFICATION),
    USER_LOCKED(413, "用户被锁定", ErrorShowType.ERROR_MESSAGE),
    USER_TYPE_ERROR(414, "用户类型错误", ErrorShowType.ERROR_MESSAGE),
    // Action  400x
    ADD_FAIL(4001, "添加失败", ErrorShowType.ERROR_MESSAGE),
    DELETE_FAIL(4002, "删除失败", ErrorShowType.ERROR_MESSAGE),
    UPDATE_FAIL(4003, "更新失败", ErrorShowType.ERROR_MESSAGE),
    DETAIL_FAIL(4004, "详情查询失败", ErrorShowType.ERROR_MESSAGE),
    DATA_NOT_EXIST(4005, "数据不存在", ErrorShowType.ERROR_MESSAGE),
    DATA_EXIST(4006, "数据已存在", ErrorShowType.ERROR_MESSAGE),
    // 文件 401x
    FILE_PARSE_FAIL(4010, "文件解析异常，获取不到文件类型或者原始名称", ErrorShowType.ERROR_MESSAGE),
    FILE_EMPTY(4011, "上传的文件不能为空", ErrorShowType.ERROR_MESSAGE),
    FILE_SIZE_ERROR(4012, "上传的文件不能超过20MB", ErrorShowType.ERROR_MESSAGE),
    // 验证码 402x
    SMS_LIMIT(4020, "验证码请求过于频繁，60秒后再试", ErrorShowType.ERROR_MESSAGE),
    SMS_CODE_EXPIRE(4021, "验证码不存在，请重新发送验证码", ErrorShowType.ERROR_MESSAGE),
    SMS_CODE_ERROR(4022, "验证码错误", ErrorShowType.ERROR_MESSAGE),
    SMS_OP_TOKEN_EXPIRE(4023, "验证码超时", ErrorShowType.ERROR_MESSAGE),
    SMS_OP_TOKEN_ERROR(4024, "Token 验证失败", ErrorShowType.ERROR_MESSAGE),
    // 其他 5xxx
    DEFAULT_VALUE_EXIST(5001, "该字典类型已存在默认值，请取消原默认值再重试", ErrorShowType.ERROR_MESSAGE);

    final int code;
    final String msg;
    final ErrorShowType showType;

    HttpCodeEnum(int code, String errorMessage, ErrorShowType showType) {
        this.code = code;
        this.msg = errorMessage;
        this.showType = showType;
    }

}